–> Data of media production, distribution and raw materials were extracted from Central Media Making Laboratory System (CMMLMS) database in comma separated value and imported to R programming language for cleaning and analysis.
The Diagnostic Microbiology Development Program (DMDP) has been working with the University of Health Sciences (UHS) in Phnom Penh, Cambodia since 2011 to provide a sustainable source of quality-controlled media such as blood culture broth bottles, agar plates, and media for identification of bacteriological agents. The media is produced and quality controlled by following guidelines for Assuring Quality of Medical Microbiology Culture Media; Clinical and Laboratory Standards Institute (CLSI M22) and Australian Society for Microbiology 2nd edition to guide development of CMML standard operating procedures (SOP) and processes. In 2017, DMDP supported the expansion and renovation of premises, purchase and installation of equipment and long-term on-site technical mentoring. Care and bleeding of sheep ensured access to a sustainable source of sheep blood. Since February 2019, CMML held ISO certification (ISO 9001:2015). The media products were included in the Ministry of Health Essential Medicines List (EML) and more than 20 customers purchased media for their routine clinical bacteriology laboratory set up.
Raw materials are grouped by item name regardless of different brands to discover the current stock. Rows highlight in pink indicate that the item’s quantity is lower than the threshold. The items with zero threshold were excluded from highlighting. Note: raw data might not up to date. It is depends on the day data extracted from CMMLMS
r_da <- r_data %>%
filter(#remaining_stock_item_batch > 0,
!is.na(threshold),
!is.na(name)
# state == "Good"
) %>%
#select(remaining_stock_item_batch,name,unit,product_type) %>%
group_by(name, unit.y, category, threshold) %>%
summarise(instock = round_half_up(sum(remaining_stock_item_batch))) %>%
select(Category = category, 'Item name' = name, 'Qnt instock' = instock, Threshold = threshold, 'In unit' = unit.y) %>%
arrange(Category, 'Item name')
## `summarise()` has grouped output by 'name', 'unit.y', 'category'. You can override using the `.groups` argument.
# short order to the last row
r_da <- rbind(r_da %>% filter(Category != "Other"),r_da %>% filter(Category == "Other"))
# add to table and formate
r_da %>%
kable(align = c('l','l','c','c',"l"), format.args = list(big.mark = ",")) %>%
kable_styling(bootstrap_options = c("bordered","condensed", "striped", "hover","responsive")) %>%
row_spec(0, background = "#E09B43", color = "white", align = "c") %>%
row_spec(which(r_da$`Qnt instock` <= r_da$Threshold, r_da$Threshold > 0) , bold = T, background = "#FFE4E1", color = "black") %>%
# row_spec(which(r_da$`Item name` == "Distilled Water") , background = "white",color = "black") %>%
#row_spec(which(r_da$`Qnt instock` <= r_da$Threshold), bold = T, background = "#DC7DED", color = "white") %>%
kableExtra::collapse_rows(columns = 1,valign = "top") %>%
scroll_box(width = "100%", height = "800px")
| Category | Item name | Qnt instock | Threshold | In unit |
|---|---|---|---|---|
| Antibiotic | Azithromycin 15mg | 200 | 50 | disk |
| Cefixime 5mg | 200 | 50 | disk | |
| Ceftriaxone 30mg | 0 | 50 | disk | |
| Ciprofloxacin 5mg | 50 | 50 | disk | |
| Cotrimoxazole 25mg | 200 | 50 | disk | |
| Gentamicin 10mg | 200 | 50 | disk | |
| Tetracycline 30mg | 0 | 50 | disk | |
| Consumables | 3M attest biological indicator | 100 | 1 | box |
| 50ml conic centrifuge tube | 775 | 200 | pack | |
| Acetic Acid glacial | 2,500 | 1,200 | ml | |
| Airway needle | 81,578 | 1,000 | box | |
| Alcohol gel | 1 | 5 | unit | |
| Alcohol pad | 900 | 5 | box | |
| Aluminum Cap BHI bottle 20mm | 35,000 | 10,000 | pack | |
| Aluminum foil | 29 | 5 | box | |
| Autoclave bag 30x60cm | 1,000 | 500 | unit | |
| Autoclave bags 14L | 1,500 | 500 | unit | |
| Betadine | 11 | 4 | unit | |
| BHI glass bottle 100ml | 10,790 | 8,415 | box | |
| BHI glass bottle 50ml | 10,752 | 7,392 | box | |
| Blood bage 250ml | 156 | 100 | unit | |
| Borosilicate tube 13x100mm | 35,000 | 16,000 | box | |
| Buffer solution pH 10.00 | 500 | 250 | ml | |
| Buffer solution pH 4.01 | 500 | 250 | ml | |
| Buffer solution pH 7.00 | 500 | 250 | ml | |
| CHAM-MATE | 30 | 10 | box | |
| Clear scotch tape | 21 | 5 | pack | |
| Conductivity Standard 84uS solution | 500 | 500 | ml | |
| Cotton Swab Sterile | 980 | 400 | unit | |
| Croyobox 100 wells | 10 | 5 | unit | |
| Crystal Violet | 225 | 25 | gram | |
| Gloves M powder | NA | 10 | box | |
| Gloves S powder | NA | 10 | box | |
| Gram Stain 5x500ml | 1 | 1 | kit | |
| Hand towel | 24 | 24 | pack | |
| Hydrochloric Acid (HCl) | 1,000 | 500 | ml | |
| Junk Label A3 | 48 | 20 | pack | |
| KimCap 13mm | NA | 16,000 | box | |
| Kovacs indole Reagent | 0 | 20 | ml | |
| Liquid hand soap | 15 | 10 | unit | |
| Loop 10ul | 7,625 | 500 | pack | |
| Loop 1ul | 6,250 | 500 | pack | |
| Microscope slides | 17 | 2 | box | |
| Na - heparinized capillary tube | 400 | 200 | box | |
| Needle 21G | 600 | 5 | box | |
| Neutral Red | 75 | 25 | gram | |
| Petri dish | 53,900 | 60,000 | box | |
| Pipette plastic 3ml sterile | 500 | 500 | pack | |
| Pipette Tip sterile 1000ul | 480 | 200 | pack | |
| Pipette Tip sterile 200ul | 480 | 200 | pack | |
| Plastic bag 7x11 | 60 | 30 | pack | |
| Potassium chloride (KCl) | 250 | 20 | ml | |
| Pourite anti-bubble additive | 240 | 120 | ml | |
| Rubber stopper BHI 20mm | 15,000 | 12,000 | pack | |
| Screw cap plastic tube 12ml | 1,500 | 500 | pack | |
| Steril srew tube 2ml | 1,750 | 500 | pack | |
| Sterilized gauze | 16 | 5 | pack | |
| Surgical mask | 200 | 200 | box | |
| Syringe 10cc | 900 | 200 | box | |
| Syringe 20cc | 30 | 20 | box | |
| Syringe 5cc | 500 | 100 | box | |
| Triple packaging | 12 | 0 | unit | |
| Dehydrated media | Amies Transport Medium | 230 | 150 | gram |
| Blood Agar Base | 17,220 | 10,000 | gram | |
| Brain Heart Infusion Broth | 25,900 | 19,000 | gram | |
| CLED agar w/bromothymol blue | 830 | 250 | gram | |
| GC Agar Base | 4,096 | 500 | gram | |
| Haemoglobin powder | NA | 3,000 | gram | |
| Hektoen Enteric Agar | 2,322 | 1,500 | gram | |
| Kligler Iron Agar | 1,617 | 800 | gram | |
| Lysine Iron Agar | 1,042 | 500 | gram | |
| MacConkey Agar | 17,500 | 10,000 | gram | |
| Mannitol Salt Agar | 15,480 | 6,000 | gram | |
| Mueller Hinton Agar | 500 | 200 | gram | |
| Mueller Hinton Agar II | 13,800 | 12,000 | gram | |
| Sabouraud 4% Glucose Agar | 500 | 500 | gram | |
| SIM Medium | 775 | 250 | gram | |
| Simmons Citrate Agar | 570 | 250 | gram | |
| Sodium Chloride (NaCl) | 1,000 | 9 | gram | |
| Sodium hydroxide (NaOH) | 0 | 100 | gram | |
| Soyabean Casein Digest Agar (TSA) | 2,084 | 960 | gram | |
| Soyabean Casein Digest Medium (TSB ) | 5,000 | 200 | gram | |
| TCBS | 2,614 | 1,500 | gram | |
| Tryptic Soy Blood Agar Base No 2 | 28,319 | 13,000 | gram | |
| Tryptic Soy Broth | 1,928 | 200 | gram | |
| Trypticase Soy Agar | 0 | 960 | gram | |
| Urea Agar Base | 1,701 | 250 | gram | |
| Supplement | Crystal Violet 0.1% | 300 | 50 | ml |
| Glycerol | 2,640 | 1,000 | ml | |
| Neutral Red 1% | 150 | 100 | ml | |
| Sheep Blood | 3,505 | 0 | ml | |
| Sodium Polyanethole Sulfate (SPS) | 258 | 200 | gram | |
| Urea supplement 40% | 450 | 400 | ml | |
| VCNT supplement | 38 | 50 | ml | |
| Vitamino supplement | 2,760 | 3,000 | ml | |
| Other | Distilled water | 4,668,074 | 0 | ml |
Dehydrate media powder is critical for the production of culture media. Based on media production data, we express dehydrate media in grams to determine the amount of consumption.
p_data <- data %>%
filter(preparation_date >= "2021-01-01") %>%
distinct(batch_number,.keep_all = T) %>% # remove duplicated..................
group_by(powder_name) %>%
summarise(total = round_half_up(sum(powder_kg,na.rm = T)*1000))
p_data %>%
ggplot(aes(reorder(powder_name,-total),total,fill = powder_name)) +
geom_bar(stat = "identity") +
geom_text(aes(label = format(total, big.mark = ",")), hjust = -0.1, size = 3) +
coord_flip() +
theme_classic() +
theme(legend.position = "non",
panel.grid.major = element_blank(),
axis.text = element_text(colour = "black"),
plot.title = element_text(color = "blue",face = "bold",hjust = 0.5),
axis.title = element_text(color = "BlueViolet")) +
scale_y_continuous(expand = c(0.01,0.01),
limits = c(0,max(p_data$total) + 1000),
label = scales::comma) +
labs(y = "Quantity in gram",
x = "Dehydrate media",
title = "Dehydrate media consumption\n from media production data")
Sheep blood is vital supplement to support bacteria growth and visualize hemolysis pattern. To sustain sheep blood supply for CMML, DMDP establish agreement with Resource Development International Cambodia (RDIC) and EUROVET veterinary clinics for care, feeding, bleeding and housing of the sheep.